﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using AccessProvider;

namespace Interface.MonHoc
{
    public partial class DSMonHoc : Form
    {
        DataConnection dc = new DataConnection();
        public DSMonHoc()
        {
            InitializeComponent();
        }

        private void DSMonHoc_Load(object sender, EventArgs e)
        {   
            string sql = "select * from MonHoc";   
            DataTable dt = dc.getData(sql);  
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                DataRow row = dt.Rows[i];
                string maMH = row["MaMH"].ToString();
                string tenMH = row["TenMH"].ToString();
                decimal diemDau = Convert.ToDecimal(row["DiemDau"].ToString());

                ClassLib.MonHoc entity = new ClassLib.MonHoc(maMH, tenMH, diemDau);

                ListViewItem item = new ListViewItem(maMH.ToString());            
                item.SubItems.Add(tenMH);
                item.SubItems.Add(diemDau.ToString());
                item.Tag = entity;

                lv_MonHoc.Items.Add(item);
            }
        }

        private void lv_MonHoc_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lv_MonHoc.SelectedItems.Count == 0) return;
            ListViewItem item = lv_MonHoc.SelectedItems[0];

            ClassLib.MonHoc entity = (ClassLib.MonHoc)item.Tag;
            txt_mamh.Text = entity.Mamh;
            txt_tenmh.Text = entity.Tenmh;
            txt_diemDau.Text = entity.Diemdau.ToString();         
        }

        void cleartextbox(params TextBox[] txts)
        {
            foreach (TextBox txt in txts)
                txt.Clear();
        }
        
        private void btn_Sua_Click_1(object sender, EventArgs e)
        {
            string _mamh = txt_mamh.Text;
            if (txt_tenmh.Text.Length == 0)
            {
                MessageBox.Show("Chọn một môn học để có thể chỉnh sửa tên môn học hoặc điểm đậu", "Lỗi", MessageBoxButtons.OK);
                return;
            }

            string _tenmh = txt_tenmh.Text;
            if (checkString(txt_tenmh.Text) == false)
            {
                lb_thongbao.Text = "Chuỗi nhập vào không được là số";
                return;
            }
            BusinessLogic bl = new BusinessLogic();
            if (bl.Isnumeric(txt_diemDau.Text) == false)
            {
                lb_thongbao.Text = "Điểm đậu phải là số không phải là ký tự, vui lòng nhập lại";
                return;
            }

            decimal _diemDau = Convert.ToDecimal(txt_diemDau.Text);
            
            string updateQuery =
                    "update MonHoc set TENMH = N'" + _tenmh + "',DiemDau = '" + _diemDau + "' where MaMH = '" + txt_mamh.Text + "'";

            AccessProvider.DataConnection dc = new AccessProvider.DataConnection();
            dc.ExecNonQuery(updateQuery);

            //cap nhat giao dien
            lv_MonHoc.SelectedItems[0].SubItems[1].Text = _tenmh;
            lv_MonHoc.SelectedItems[0].SubItems[2].Text = _diemDau.ToString();

            // cap nhat tag
            ListViewItem item = lv_MonHoc.SelectedItems[0];
            ClassLib.MonHoc entity = (ClassLib.MonHoc)item.Tag;
            entity.Tenmh = _tenmh;
            entity.Diemdau = _diemDau;
        }

        bool checkTextBox(params TextBox[] txts)
        {
            bool isFilled = true;
            foreach (TextBox txt in txts)
            {
                if (txt.Text.Length == 0)
                {
                    isFilled = false;
                }
            }
            return isFilled;
        }



        private bool checkString(string a)
        {
            int len = a.Length;
            char[] letters = new char[len];
            letters = a.ToCharArray();
            for (int z = 0; z < len; z++)
            {
                if (letters[z] >= 48 && letters[z] <= 57)
                    return false;
            }
            return true;
        }

        private void btn_Reset_Click(object sender, EventArgs e)
        {
           
            cleartextbox(txt_mamh,txt_tenmh,txt_diemDau);
        }
        
        private void btn_Them_Click(object sender, EventArgs e)
        {
            
            bool checktext = checkTextBox(txt_tenmh, txt_diemDau);
            if (checktext == false)
            {
                MessageBox.Show("Bạn chưa nhập đầy đủ thông tin.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;

            }


            string maMon = txt_mamh.Text;
            string tenMon = txt_tenmh.Text;
            decimal diemDau = 0;
            
            if (checkString(txt_tenmh.Text) == false)
            {
                lb_thongbao.Text = "Chuỗi nhập vào không được là số";
                return;
            }

            bool chck = checkString(txt_diemDau.Text);
            if (chck == true)
            {
                lb_thongbao.Text = "Điểm đậu phải là số không phải là ký tự, vui lòng nhập lại";
                return;
            }
            else
            {
                 diemDau = Convert.ToDecimal(txt_diemDau.Text);
            }

            

            string checkQuery = "select count(*) from MonHoc where MaMH = '" + maMon + "'";
            AccessProvider.DataConnection dc = new AccessProvider.DataConnection();
            int checkma = dc.getNumberValue(checkQuery);


            if (checkma > 0)
            {
                MessageBox.Show("Mã Môn Học này đã tồn tại.", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            
            string insertQuery = "insert into MonHoc (MaMH, TenMH, DiemDau) values('{0}',N'{1}','{2}')";
            insertQuery = string.Format(insertQuery, maMon, tenMon, diemDau);
            
            AccessProvider.DataConnection dc1 = new AccessProvider.DataConnection();
            dc1.ExecNonQuery(insertQuery);

            ClassLib.MonHoc mh = new ClassLib.MonHoc(maMon, tenMon, diemDau);

            ListViewItem item = new ListViewItem(maMon.ToString());
            item.SubItems.Add(tenMon);
            item.SubItems.Add(Convert.ToDecimal(diemDau).ToString());
            item.Tag = mh;
            lv_MonHoc.Items.Add(item); 
        }

    }
}
